#ifndef _TesselationShaderClass_H_
#define _TesselationShaderClass_H_

#include "shaderclass.h"
#include "lightclass.h"
#include "material.h"

class TesselationShaderClass: ShaderClass
{
private:

	struct CameraBufferType
	{
		D3DXVECTOR4 cameraPosition;
	};

public:
	TesselationShaderClass();
	~TesselationShaderClass();

	bool Initialize(ID3D11Device*);
	bool Render(ID3D11DeviceContext*, int, const D3DXMATRIX&, const D3DXMATRIX&, const D3DXMATRIX&, const D3DXVECTOR3&, LightsContainer*, const Material*);

private:
	bool InitializeShader(ID3D11Device*, WCHAR*, WCHAR*, WCHAR*, WCHAR*);
	void ShutdownShader();

	bool SetShaderParameters(ID3D11DeviceContext*, const D3DXMATRIX&, const D3DXMATRIX&, const D3DXMATRIX&, const D3DXVECTOR3&, LightsContainer*, const Material*);

private:
	
	ID3D11Buffer* m_materialBuffer;
	ID3D11Buffer* m_lightBuffer;
	ID3D11Buffer* m_cameraBuffer;
};

#endif